<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // 传统的数组
    // var arr = [1, 2, 3, 1, 2, 3, 1, 2, 3];

    // ES6 提供了新的数据结构 Set。它类似于数组，但是成员(元素)的值都是唯一的，没有重复的值。

    // 注意: Set没有键名,只有键值 或者说键名和键值都是同一个值

    // 如何创建Set数据结构?  => 构造函数Set创建
    var s = new Set();
    console.log(s);
    // console.log(typeof s);


    // Set结构的属性和方法

    // 属性
    // size  Set数据结构成员的个数(元素的个数)

    // 方法:
    // add() 向Set数据中新增一个成员(元素)   返回值:Set数据结构本身 (可以使用链式操作)
    //       注意:每次追加之前 判断Set数据中是否存在此成员 (如果新的成员是引用类型,判断内存地址是否已经被引用)
    // has()      判断Set数据中是否存在某个成员  存在=>true  不存在=>false
    // delete()   删除Set数据中的一个成员 (单删)  删除成功 -> true 删除失败=>false
    // clear()    清除Set数据中所有成员(清空数据)

    // forEach(function(item,index,set){})  遍历Set数据结构 (Set没有键名,只有键值 或者说键名和键值都是同一个值)

    // add()    

    var arr = [];

    s.add(1).add(2).add(3);
    s.add(1).add(2).add(3); // 每次追加之前 判断Set数据中是否存在此成员 存在=>跳过
    s.add(arr);
    s.add(arr);

    // console.log(s.has(1));
    // console.log(s.has(100));

    // console.log(s.delete(1));
    // console.log(s.delete(100));
    
    // s.clear();

    console.log(s);


    s.forEach(function(item,index){
        console.log(item,index);
    })






</script>

</html>